Widgets are an increasingly popular technology. Widgets or gadgets are mini applications that afford a limited set of information and/or functionality. In other words, they are designed to perform a single task well. Typically, widgets are comprised of a metadata (e.g., XML), code (e.g., JavaScript), and a declarative user interface (e.g., HTML). The metadata provides widget configuration information such as an identifier, name, version, description, and author, among other things. The code specifies functionality associated with a widget, and the user interface provides a mechanism to present data to and receive data from a user.
Widgets can be designed to perform various tasks. In many cases, widgets are written to acquire and potentially aggregate data from other sources. For example, stock information be retrieved from one or more websites and utilized as part of a stock ticker widget. Alternatively, an application can be accessed, for instance via an application programming interface (API), to identify the status of system resources such as battery charge remaining for a battery widget. However, some widgets simply provide entertainment in the form of various games users can play such as crossword puzzles, poker, solitaire, and checkers.
There are two broad categories of widgets, namely web and desktop. The distinction is mainly one of location. Web widgets refer to widgets that are embedded within a web page. For instance, widgets can be incorporated into personal web pages, blogs, wikis, and social networking sites to enhance personal experience or the experience of visitors. In one implementation, web widgets are simply smaller web pages embedded into a larger web page. As the name suggests, desktop widgets refer to widgets that reside on a portion of a device desktop. In this scenario, a widget engine is installed on a computer to enable hosting widgets on a desktop. In addition to supporting presentation, widgets employ the engine to process internal and/or external requests.
Regardless of type, widgets can be obtained in various ways. First, a user can develop and deploy his/her own widget utilizing a widget toolkit, for instance. Additionally or alternatively, widgets can be obtained from third parties including particular vendors and other users who share their widgets. Widget format can vary based on where the widget was designed or acquired as well as an associated widget platform.